package picol;

import java.io.IOException;
import java.io.PrintStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import picol.model.jjgener.ParseException;
import picol.controller.Controler;
import picol.controller.ControlerImp;
import picol.model.Model;
import picol.model.ModelImp;
import picol.outputmanager.PInputStream;
import picol.outputmanager.POutputStream;
import picol.outputmanager.PSystem;
import picol.view.View;
import picol.view.ViewImp;

/**
 * Classe principale du projet
 * @author Aurélien Marcel - Julien Sanderson
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws ParseException {

        // Mise en place de l'architecture MVC
        Model m = new ModelImp();
        View v = new ViewImp();
        Controler ctrl = new ControlerImp(v, m);
        v.subscription(ctrl);

        // Gestion de la console de l'interface graphique
        PrintStream out;
        try {
            out = new PrintStream(new POutputStream(v), true);
            PSystem.setOut(out);
            PSystem.setIn(new PInputStream(v));
        } catch (IOException ex) {
            // Problème de flux de fichier : on enregistre l'erreur dans les logs
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
